package rbac.view;

import rbac.domain.vo.BaseVo;
import rbac.domain.vo.DeptVo;
import rbac.domain.vo.Result;
import rbac.domain.vo.UserVo;
import rbac.service.IBaseService;
import rbac.service.IDeptService;

/**
 * 视图层基类
 */

abstract class BaseView<Vo extends BaseVo, IService extends IBaseService> {
    IService service;

    Vo[] cache; // 视图对象缓存数组

    public static void printError(String message) {
        System.out.println("\033[31m" + message + "\033[0m");
    }

    public Vo getCacheById(){
        System.out.print(" 请输⼊ID，ID 必须是⼤于0的整数:");
        if (!MainView.input.hasNextInt()){ // 验证⽤户输⼊的 ID是否为整数
            MainView.input.nextLine(); // 清除⽆效输⼊
            printError("ID 必须为整数，请输⼊整数值 ");
            return null;
        }

        // 获取⽤户输⼊的ID
        int id = MainView.input.nextInt();
        MainView.input.nextLine();

        // 验证ID是否⼤于0
        if (id < 1){
            printError("ID必须⼤于0，请重新输⼊");
            return null;
        }

        // 如果缓存为空，则从服务层查询所有部⻔信息并缓存
        if (cache == null){
            Result result = service.list();
            cache = (Vo[]) result.data;
        }

        // 在缓存中查找指定ID的部⻔
        Vo vo = null;
        for (Vo item : cache){
            if (item.id == id) {
                // 找到对应ID的部⻔，输出部⻔信息
                System.out.println("该ID对应的数据是：");
                System.out.println(item);
                vo = item;
                break;
            }
        }

        // 如果未找到部⻔，则提示⽤户
        if (vo == null){
            printError("当前没有该ID对应的数据");
            return null;
        }
        return vo;
    }


}

